In recent years, the media industry has expanded its horizons beyond traditional analog technologies. Audio, photographs, and even feature films are now being recorded or converted into digital formats. To encourage compatibility between products, standard formats have been developed in many of the media categories.
MPEG is a popular standard that has been developed for digitally storing audio-visual sequences and for supplying the digital data that represents the audio-visual sequences to a client. For the purposes of explanation, the MPEG-1 and MPEG-2 formats shall be used to explain problems associated with providing non-sequential access to audio-visual information. The techniques employed by the present invention to overcome these problems shall also be described in the context of MPEG. However, it should be understood that MPEG-1 and MPEG-2 are merely two contexts in which the invention may be applied. The invention is not limited to any particular digital format.
In the MPEG format, video and audio information are stored in a binary file (an “MPEG file”). The video information within the MPEG file represents a sequence of video frames. This video information may be intermixed with audio information that represents one or more soundtracks. The amount of information used to represent a frame of video within the MPEG file varies greatly from frame to frame based both on the audio-visual content of the frame and the technique used to digitally represent that content. In a typical MPEG file, the amount of digital data used to encode a single video frame varies from 2K bytes to 50K bytes.
During playback, the audio-visual information represented in the MPEG file is sent to a client in a data stream (an “MPEG data stream”). An MPEG data stream must comply with certain criteria set forth in the MPEG standards. In MPEG-2, the MPEG data stream must consist of fixed size packets. Specifically, each packet must be exactly 188 bytes. In MPEG-1, the size of each packet may vary, with a typical size being 2252 bytes. Each packet includes a header that contains data to describe the contents of the packet. Because the amount of data used to represent each frame varies and the size of packets does not vary, there is no correlation between the packet boundaries and the boundaries of the video frame information contained therein.
MPEG employs three general techniques for encoding frames of video. The three techniques produce three types of frame data: Inter-frame (“I-frame”) data, Predicted frame (“P-frame”) data and Bi-directional (“B-frame”) data. I-frame data contains all of the information required to completely recreate a frame. P-frame data contains information that represents the difference between a frame and the frame that corresponds to the previous I or P-frame data. B-frame data contains information that represents relative movement between preceding I or P-frame data and succeeding I or P-frame data. These digital frame formats are described in detail in the following international standards: ISO/IEC 13818-1, 2, 3 (MPEG-2) and ISO/IEC 11172-1, 2, 3 (MPEG-1). Documents that describe these standards (hereafter referred to as the “MPEG specifications”) are available from ISO/IEC Copyright Office Case Postale 56, CH 1211, Geneve 20, Switzerland.
As explained above, video frames cannot be created from P and B-frame data alone. To recreate video frames represented in P-frame data, the preceding I or P-frame data is required. Thus, a P-frame can be said to “depend on” the preceding I or P-frame. To recreate video frames represented in B-frame data, the preceding I or P-frame data and the succeeding I or P-frame data are required. Thus, B-frames can be said to depend on the preceding and succeeding I or P-frames.
The dependencies described above are illustrated in FIG. 1A. The arrows in FIG. 1A indicate an “depends on” relationship. Specifically, if a given frame depends on another frame, then an arrow points from the given frame to the other frame.
In the illustrated example, frame 20 represents an I-frame. I frames do not depend on any other frames, therefore no arrows point from frame 20. Frames 26 and 34 represent P-frames. Again, a P-frame depends on the preceding I or P frame, consequently, an arrow 36 points from P-frame 26 to I-frame 20, and an arrow 38 points from P-frame 34 to P-frame 26.
Frames 22, 24, 28, 30 and 32 represent B-frames. Again, B-frames depend on the preceding and succeeding I or P frames. Consequently, arrows 40 point from each of frames 22, 24, 28, 30 and 32 to the I or P-frame that precedes each of the B-frames, and to each I or P-frame that follows each of the B-frames.
The characteristics of the MPEG format described above allow a large amount of audio-visual information to be stored in a relatively small amount of digital storage space. However, these same characteristics make it difficult to play the audio-visual content of an MPEG file in anything but a strict sequential manner. For example, it would be extremely difficult to randomly access a video frame because the data for the video frame may start in the middle of one MPEG packet and end in the middle of another MPEG packet. Further, if the frame is represented by P-frame data, the frame cannot be recreated without processing the I and P-frames immediately preceding the P-frame data. If the frame is represented by B-frame data, the frame cannot be recreated without processing the I and P-frames immediately preceding the B-frame data, and the P-frame or I-frame immediately following the B-frame data.
As would be expected, the viewers of digital video desire at least the same functionality from the providers of digital video as they now enjoy while watching analog video tapes on video cassette recorders. For example, viewers want to be able to make the video jump ahead, jump back, fast forward, fast rewind, slow forward, slow rewind and freeze frame. However, due to the characteristics of the MPEG video format, MPEG video providers have only been able to offer partial implementations of some of these features.
Some MPEG providers have implemented fast forward functionality by generating fast forward MPEG files. A fast forward MPEG file is made by recording in MPEG format the fast forward performance of an analog version of an audio-visual sequence. Once a fast forward MPEG file has been created, an MPEG server can simulate fast forward during playback by transmitting an MPEG data stream to a user from data in both the normal speed MPEG file and the fast forward MPEG file. Specifically, the MPEG server switches between reading from the normal MPEG file and reading from the fast forward MPEG file in response to fast forward and normal play commands generated by the user. This same technique can be used to implement fast rewind, forward slow motion and backward slow motion.
Although the above referenced techniques address the problem of displaying video at speeds other than normal speed, it does not address the issue of the quality of the video that is displayed. When video is displayed at a speed higher than lx, the quality of each frame is not very important because the user doesn't have time to notice it. However, when the when the video is displayed at speeds slower than lx, the user has more time to discern the details of the video, thus the quality of the video becomes important in such a circumstance.
In the techniques described above, regardless of the speed at which the video is displayed, the quality of the video does not change. That is, the quality of each frame of video remains the same regardless of whether it is displayed at a high speed (e.g., greater than 1×) or paused. If a frame is blurry during high speed play, it will be blurry during pause.
One point that should be noted is that when video is displayed at less than 1× speed or paused, streaming constraints are relaxed. The techniques described above do not exploit this relaxation in the streaming constraints.
An improved method for sending improved quality video information to a client is desired.